Перейти к основному содержимому

4.10. Базы данных

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Базы данных

Теперь поговорим о том, как работают с данными в программировании. Так, мы изучили объектно-ориентированное программирование (ООП) и изучили реляционные базы данных (SQL), определили, что есть программирование логики, а есть хранение и обработка данных.

Но как программы взаимодействуют с базами данных?

Прежде, чем мы перейдём к особенностям различных языков программирования, нам нужно изучить универсальный подход по работе с базой данных.

И для этого нужно ещё раз пробежаться по SQL с точки зрения практического применения. Мы изучили функционал. А на практике как?


Задачи

★ Какие задачи решает база данных?

Хранение данных

БД предназначены для надёжного хранения информации. Они обеспечивают структурированное представление данных, что позволяет легко находить, изменять и управлять ими.

Пример - интернет-магазин может хранить информацию о товарах, клиентах, заказах и платежах - и всё это будет в разных таблицах, связанных между собой.


НазваниеЦенаКоличество
Товар110053
Товар220096
Товар330011
ИмяАдресEMail
ИвановМосква1@mail.ru
ПетровКазань2@mail.ru
СидоровУфа3@mail.ru
ТоварыДатаСтатус
1, 2, 325.05.2025Готов
114.02.2024Готов
322.06.2025Готов


И SQL как раз позволяет выполнять какие-то операции - поиск, добавление, обновление, удаление, агрегация.

Разберём подробнее.


Выбор данных

БД позволяет извлекать нужные данные с помощью запросов. Это может быть поиск конкретной записи или выборка по определённым критериям, что создаёт некий массив, коллекцию.

Пример - пользователь интернет-магазина выполняет поиск ноутбуков стоимостью до 50000 рублей. Запрос в БД выбирает все товары из категории «Ноутбуки» с ценой меньше или равной 50000. В этот момент выполняется SQL-запрос:

SELECT * FROM Products WHERE category = 'laptops' AND price <= 50000;

Добавление данных

Новые данные можно добавлять БД для поддержания актуальности информации.

Пример - владелец магазина добавляет новый товар - смартфон Xiaomi 13 Ultra:

INSERT INTO Products (name, category, price, stock) 
VALUES ('Xiaomi 13 Ultra', 'smartphones', 79999, 50);

Обновление данных.

Данные в БД можно изменять. Это полезно, когда информация становится устаревшей или меняется.

Пример - администратор магазина обновляет цену на iPhone 16 Pro с 150000 до 80000 рублей.

UPDATE Products 
SET price = 80000
WHERE name = 'iPhone 16 Pro';

Удаление данных.

Устаревшие или ненужные данные можно удалять из БД.

Пример - товар закончился на складе, и его больше не планируют продавать. Например, удаляем старую модель телефона:

DELETE FROM Products 
WHERE name = 'iPhone 11';

Подсчёты и аналитика.

БД позволяют выполнять расчёты и анализировать данные. Это может быть подсчёт количества записей, суммирование значений или вычисление средних значений.

Пример - магазин хочет узнать общую стоимость всех товаров на складе.

SELECT SUM(price * stock) AS total_stock_value 
FROM Products;

Агрегатные функции.

Те самые SUM, AVG, COUNT, MIN, MAX - они позволяют выполнять сложные вычисления на основе данных, получая результат сразу в нужном виде.

Пример - магазин хочет узнать среднюю цену всех товаров в категории ноутбуков.

SELECT AVG(price) AS average_price 
FROM Products
WHERE category = 'laptops';

Индексы.

Они ускоряют поиск данных в БД, работая как указатели, которые помогают быстро находить нужные записи.

Пример - в телефонной книге быстрее найти человека по фамилии, если она отсортирована по алфавиту. Аналогично, индекс в БД ускоряет поиск товаров по названию.

CREATE INDEX idx_product_name ON Products(name);

Сортировка данных.

Сортировка позволяет упорядочивать данные по определённому критерию (по возрастанию, например).

Пример - клиент хочет увидеть товары, отсортированные по цене - от дешевых к дорогим.

SELECT * FROM Products 
ORDER BY price ASC;

Группировка.

БД могут группировать данные и создавать сводные отчеты. Это полезно для анализа больших объемов информации.

Пример - магазин хочет узнать, сколько товаров каждой категории есть на складе.

SELECT category, SUM(stock) AS total_stock 
FROM Products
GROUP BY category;

Работа с большими данными.

Современные БД способны обрабатывать огромные объемы данных, сохраняя высокую производительность.

Пример - сервис потокового видео (тот же Netflix) хранит данные о миллионах пользователей, их предпочтениях, истории просмотров и рекомендациях. Это - большие данные (BigData) и базы данных здесь играют ключевую роль.


Оптимизация.

Конечно, примеров выше достаточно - у нас и индексы, и группировка, и сортировка, но как правило, этим не ограничивается.

И, кстати говоря, ещё один момент - оптимизация проектирования. Например, в примере выше мы используем перечисление товаров в таблице с Заказами, хотя лучше сделать промежуточную таблицу связи - но, это уже проектирование и об этом мы говорим позже.

Зачем мы повторили SQL? Мы должны понять, что БД - важнейший и крайне мощный инструмент, однако достаточно сложный. Теперь мы готовы к следующему важному моменту - особенностям взаимодействия с базой данных.